﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using BGCOP.CAVTOP.INNERDEFS;

namespace BGCOP.CAVTOP.UTCOM.WINFORMS
{
    public partial class Form1 : Form
    {
        int[] vInners = new int[32];
        int innerAct = 1;

        public Form1()
        {
            InitializeComponent();
        }

        public void AppendTextBox(string value)
        {
            if (InvokeRequired)
            {
                this.Invoke(new Action<string>(AppendTextBox), new object[] { value });
                return;
            }
            else
            {
                textBox1.AppendText("[" + DateTime.Now + "] " + value + "\n");
                textBox1.ScrollToCaret();
            }
            
        }

        public void tre(string value)
        {
            if (InvokeRequired)
            {
                this.Invoke(new Action<string>(tre), new object[] { value });
                return;
            }
            else
            {
                AppendTextBox("Enviando Ping");
                var res = EasyInner.PingOnLine(1);
                if (res == (int)Enumeradores.Retorno.RET_COMANDO_OK)
                {
                    AppendTextBox("BIP OK");
                }
                else
                {
                    AppendTextBox("BIP FAIL");
                }
            }

        }

        private void button1_Click(object sender, EventArgs e)
        {
            //pruebas
            
            EasyInner.DefinirTipoConexao((byte)Enumeradores.TipoConexao.TCP_IP_COM_PORTA_FIXA);
            //verificar si el puerto esta cerrado
            EasyInner.FecharPortaComunicacao();
            var ff = EasyInner.AbrirPortaComunicacao(3570);
            if (ff == (int)Enumeradores.Retorno.RET_COMANDO_OK)
            {
                Thread.Sleep(2500);

                AppendTextBox("Conexion establecida OK");
                //abrio el puerto
                
            }

            
        }
        public void proceso()
        {
            int i = 0;
            while (i++<5)
            {
                //AppendTextBox("Ping to: Inner");
                //var a = EasyInner.PingOnLine(1);
                //if (a == (int)Enumeradores.Retorno.RET_COMANDO_OK)
                //{
                //    AppendTextBox("Ping Result: ping OK* "+ i.ToString());    
                //}
                //else
                //{
                //    AppendTextBox("Ping Result: ping fail*" + i.ToString());    
                //}
                tre("ww");
                Thread.Sleep(3000);    
            }
            //verificar si el puerto esta cerrado
            //EasyInner.FecharPortaComunicacao();
            //AppendTextBox("Terminado el proceso!");
        }

        private void button2_Click(object sender, EventArgs e)
        {
            EasyInner.FecharPortaComunicacao();
            AppendTextBox("Terminado el proceso!");
        }

        private void button3_Click(object sender, EventArgs e)
        {
            //EasyInner.AcionarBipCurto(1);
            AppendTextBox("Enviando BIP");
            var res = EasyInner.AcionarBipCurto(Convert.ToInt32(txtInner.Text));
            if (res == (int)Enumeradores.Retorno.RET_COMANDO_OK)
            {
                AppendTextBox("BIP OK");
            }
            else
            {
                AppendTextBox("BIP FAIL");
            }
        }

        private void button4_Click(object sender, EventArgs e)
        {
            AppendTextBox("Enviando Ping");
            var res = EasyInner.PingOnLine(Convert.ToInt32(txtInner.Text));
            if (res == (int)Enumeradores.Retorno.RET_COMANDO_OK)
            {
                AppendTextBox("BIP OK");
            }
            else
            {
                AppendTextBox("BIP FAIL");
            }
        }

        private void button5_Click(object sender, EventArgs e)
        {
            Thread molinete1 = new Thread(new ThreadStart(proceso));
            molinete1.Start();
        }

        private void button6_Click(object sender, EventArgs e)
        {
            EasyInner.ConfigurarInnerOffLine();
            EasyInner.DefinirQuantidadeDigitosCartao(14);
            //EasyInner.HabilitarTeclado(1, 0);
            EasyInner.HabilitarTeclado((byte)Enumeradores.Opcao.SIM, 0);
            EasyInner.ConfigurarTipoLeitor((byte)Enumeradores.TipoLeitor.PROXIMIDADE_ABATRACK2);
            EasyInner.ConfigurarLeitor1((byte)Enumeradores.Operacao.ENTRADA_E_SAIDA);
            EasyInner.ConfigurarLeitor2((byte)Enumeradores.Operacao.ENTRADA_E_SAIDA);

            
            EasyInner.ConfigurarAcionamento1((byte)Enumeradores.FuncaoAcionamento.ACIONA_REGISTRO_ENTRADA_OU_SAIDA, 5);
            EasyInner.ConfigurarAcionamento2((byte)Enumeradores.FuncaoAcionamento.ACIONA_REGISTRO_ENTRADA_OU_SAIDA, 5);
            

            var res = EasyInner.EnviarConfiguracoes(1);
            if (res == (int)Enumeradores.Retorno.RET_COMANDO_OK)
            {
                AppendTextBox("conf offline OK");
            }
            else
            {
                AppendTextBox("conf offline FAIL");
            }
            EasyInner.ConfigurarInnerOffLine();
            EasyInner.DefinirEntradasMudancaOnLine((byte)Enumeradores.EntradasMudancaOnline.LEITOR1_E_LEITOR2);
            EasyInner.DefinirEntradasMudancaOffLine((byte)Enumeradores.Opcao.SIM, (byte)Enumeradores.Opcao.SIM, (byte)Enumeradores.Opcao.NAO, (byte)Enumeradores.Opcao.NAO);
            EasyInner.DefinirMensagemPadraoMudancaOffLine((byte)Enumeradores.Opcao.SIM, "En Modo Offline");
            EasyInner.DefinirMensagemPadraoMudancaOnLine((byte)Enumeradores.Opcao.SIM, "En Modo Online");
            EasyInner.HabilitarMudancaOnLineOffLine((byte)Enumeradores.MudancaOnlineOffline.COM_PING_ONLINE, 8);
            res = EasyInner.EnviarConfiguracoesMudancaAutomaticaOnLineOffLine(1);
            if (res == (int)Enumeradores.Retorno.RET_COMANDO_OK)
            {
                AppendTextBox("conf MUD offline OK");
            }
            else
            {
                AppendTextBox("conf MUD offline FAIL");
            }
        }

        private void button7_Click(object sender, EventArgs e)
        {
            EasyInner.EnviarMensagemPadraoOnLine(1, 1, "BGCOP ONLINE");
        }

        private void button8_Click(object sender, EventArgs e)
        {
            var res = EasyInner.EnviarFormasEntradasOnLine(
                        1,      //Numero do Inner..
                        10,  //Qtd Digitos Teclado..
                        1,                      //Eco do Teclado no Display..
                        (byte)Enumeradores.EntradasMudancaOnline.TECLADO_E_LEITOR1_E_VERI_BIOMETRICA,//Teclado + Leitor 1 + Verificação Biométrica..
                        15,                     //Tempo teclado..
                        17);                    //Posição do Cursor no Teclado..
            if (res == (int)Enumeradores.Retorno.RET_COMANDO_OK)
            {
                AppendTextBox("entradas OK");
            }
            else
            {
                AppendTextBox("entradas FAIL");
            }
        }
    }
}
